An application, such as a web browser, may communicate over the Internet or another network in order to send and receive information to a server or other device. When the application requests that an action be taken (e.g., requests a web page), the application may experience delay, known as “latency.” This latency may be due to a number of causes, such as a delay at the back-end server in processing requests from the application, or network delay in the transmission of requests and responses to and from the application.
Users and network administrators may wish to measure how much application latency is attributable to network delay (and to distinguish network delay from application delay). One technique for measuring network latency is to measure the round-trip-time of a request/acknowledgment in the network. A client may send a request and await an acknowledgment that the request has been received. Upon receiving the acknowledgment, the client may compare the receipt time for the acknowledgment to the sending time of the request to determine a round-trip-time of the request from the client to the requestee. If the round-trip time of subsequent requests increases (or decreases), this change may be assumed to be attributable to a change in the network latency.
The acknowledgment may differ from a response to the request. For example, in an HTTP scenario, an HTTP request may be generated, and an HTTP response may be sent back. Upon receiving the initial HTTP request, the requestee may immediately send an acknowledgment, then may process the request and send a response. The round trip time of the request/response is typically a poor measure of network latency, since this measure also includes the amount of time that it took to generate a response to the request. The round trip time of the request/acknowledgment may be a better measure, since the acknowledgment is typically returned form the requestee right way. Furthermore, in some networks, a separate timing flow may also be used in an attempt to gauge network latency. The timing flow may include special timing packets with timestamp data that allows the travel time of packets in the network to be measured.
However, both request/acknowledgment round trip measurement and timing flows may not provide an accurate measurement of network latency due to the presence of intermediate interception proxies in the network which serve as false endpoints. An interception proxy may intercept a request from the client and imitate the requestee. The interception proxy may manipulate the rate at which acknowledgment receipts are sent to the client on behalf of the requestee. Thus, the round-trip time observed by the client may not be an accurate representation of the amount of time that a request/acknowledgment spend transiting the network.
Interception proxies are commonly used for a number of purposes. For example, WAN accelerators may intercept traffic associated with a Wide Area Network and may perform WAN optimizations, such as compression, caching, and latency optimizations. Furthermore, application-specific interception proxies, such as HTTP interception proxies, may also be used to provide targeted improvements to applications or protocols of the network.